# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes do
  @moduledoc """
  Resource representing the [Endpoint Verification-specific attributes](https://cloud.google.com/endpoint-verification/docs/device-information) of a device.

  ## Attributes

  *   `additionalSignals` (*type:* `map()`, *default:* `nil`) - [Additional signals](https://cloud.google.com/endpoint-verification/docs/device-information) reported by Endpoint Verification. It includes the following attributes: * Non-configurable attributes: hotfixes, av_installed, av_enabled, windows_domain_name, is_os_native_firewall_enabled, and is_secure_boot_enabled. * [Configurable attributes](https://cloud.google.com/endpoint-verification/docs/collect-config-attributes): file, folder, and binary attributes; registry entries; and properties in a plist.
  *   `browserAttributes` (*type:* `list(GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1BrowserAttributes.t)`, *default:* `nil`) - Details of browser profiles reported by Endpoint Verification.
  *   `certificateAttributes` (*type:* `list(GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1CertificateAttributes.t)`, *default:* `nil`) - Details of certificates.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :additionalSignals => map() | nil,
          :browserAttributes =>
            list(
              GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1BrowserAttributes.t()
            )
            | nil,
          :certificateAttributes =>
            list(
              GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1CertificateAttributes.t()
            )
            | nil
        }

  field(:additionalSignals, type: :map)

  field(:browserAttributes,
    as: GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1BrowserAttributes,
    type: :list
  )

  field(:certificateAttributes,
    as: GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1CertificateAttributes,
    type: :list
  )
end

defimpl Poison.Decoder,
  for:
    GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes do
  def decode(value, options) do
    GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes.decode(
      value,
      options
    )
  end
end

defimpl Poison.Encoder,
  for:
    GoogleApi.CloudIdentity.V1.Model.GoogleAppsCloudidentityDevicesV1EndpointVerificationSpecificAttributes do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
